Younix's Studio.

Android5.1 RK3288 build.sh脚本分析

字数统计: 427阅读时长: 2 min
2016/12/31 Share
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/bin/bash

source build/envsetup.sh >/dev/null && setpaths
TARGET_PRODUCT=`get_build_var TARGET_PRODUCT`

# source environment and chose target product
DEVICE=`get_build_var TARGET_PRODUCT`
BUILD_VARIANT=`get_build_var TARGET_BUILD_VARIANT`
UBOOT_DEFCONFIG=rk3288_defconfig
KERNEL_DEFCONFIG=rockchip_defconfig
KERNEL_DTS=rk3288-tb_8846
PACK_TOOL_DIR=RKTools/linux/Linux_Pack_Firmware
IMAGE_PATH=rockdev/Image-$TARGET_PRODUCT
export PROJECT_TOP=`gettop`

lunch $DEVICE-$BUILD_VARIANT

PLATFORM_VERSION=`get_build_var PLATFORM_VERSION`
DATE=$(date +%Y%m%d.%H%M)
STUB_PATH="$KERNEL_DTS"_"$PLATFORM_VERSION"_"$DATE"_RELEASE_TEST
#STUB_PATH=rk3288-tb_8846_
STUB_PATH="$(echo $STUB_PATH | tr '[:lower:]' '[:upper:]')"
export STUB_PATH=$PROJECT_TOP/$STUB_PATH
export STUB_PATCH_PATH=$STUB_PATH/PATCHES



# build uboot
echo "start build uboot"
cd u-boot && make distclean && make $UBOOT_DEFCONFIG && make -j32 && cd -
if [ $? -eq 0 ]; then
echo "Build uboot ok!"
else
echo "Build uboot failed!"
exit 1
fi




# build kernel
echo "start build kernel"
cd kernel && make $KERNEL_DEFCONFIG && make $KERNEL_DTS.img -j32 && cd -
if [ $? -eq 0 ]; then
echo "Build kernel ok!"
else
echo "Build kernel failed!"
exit 1
fi




# build android
echo "start build android"
make installclean
make -j32
if [ $? -eq 0 ]; then
echo "Build android ok!"
else
echo "Build android failed!"
exit 1
fi



# mkimage.sh
echo "make and copy android images"
./mkimage.sh
if [ $? -eq 0 ]; then
echo "Make image ok!"
else
echo "Make image failed!"
exit 1
fi
cp -f $IMAGE_PATH/* $PACK_TOOL_DIR/rockdev/Image/

# copy images to rockdev
echo "copy u-boot images"
cp u-boot/uboot.img $PACK_TOOL_DIR/rockdev/Image/
cp u-boot/RK3288UbootLoader* $PACK_TOOL_DIR/rockdev/RK3288UbootLoader.bin

echo "copy kernel images"
cp kernel/resource.img $PACK_TOOL_DIR/rockdev/Image
cp kernel/kernel.img $PACK_TOOL_DIR/rockdev/Image

echo "copy manifest.xml"
cp manifest.xml $IMAGE_PATH/manifest_${DATE}.xml

cd RKTools/linux/Linux_Pack_Firmware/rockdev && ./mkupdate.sh
if [ $? -eq 0 ]; then
echo "Make update image ok!"
else
echo "Make update image failed!"
exit 1
fi
cd -

mkdir -p $STUB_PATH

#Generate patches
.repo/repo/repo forall -c '[ "$REPO_REMOTE" = "rk" -a "$REPO_RREV" != "refs/tags/android-4.4.4_r2" ] && { REMOTE_DIFF=`git log $REPO_REMOTE/$REPO_RREV..HEAD`; LOCAL_DIFF=`git diff`; [ -n "$REMOTE_DIFF" ] && { mkdir -p $STUB_PATCH_PATH/$REPO_PATH/; git format-patch $REPO_REMOTE/$REPO_RREV..HEAD -o $STUB_PATCH_PATH/$REPO_PATH; } || :; [ -n "$LOCAL_DIFF" ] && { mkdir -p $STUB_PATCH_PATH/$REPO_PATH/; git reset HEAD ./; git diff > $STUB_PATCH_PATH/$REPO_PATH/local_diff.patch; } || :; }'
#Copy stubs
cp manifest.xml $STUB_PATH/manifest_${DATE}.xml

mkdir -p $STUB_PATCH_PATH/kernel
cp kernel/.config $STUB_PATCH_PATH/kernel

mkdir -p $STUB_PATH/IMAGES/
#mv $PACK_TOOL_DIR/rockdev/Image/* $STUB_PATH/IMAGES/
mv RKTools/linux/Linux_Pack_Firmware/rockdev/update.img $STUB_PATH/IMAGES/
mv $PACK_TOOL_DIR/rockdev/RK3288UbootLoader.bin $STUB_PATH/IMAGES/
cp $PACK_TOOL_DIR/rockdev/parameter $STUB_PATH/IMAGES/
cp $STUB_PATH/IMAGES/update.img rockdev/Image-$TARGET_PRODUCT
#
#Save build command info
echo "UBOOT: defconfig: $UBOOT_DEFCONFIG" >> $STUB_PATH/build_cmd_info
echo "KERNEL: defconfig: $KERNEL_DEFCONFIG, dts: $KERNEL_DTS" >> $STUB_PATH/build_cmd_info
echo "ANDROID:$DEVICE-$BUILD_VARIANT" >> $STUB_PATH/build_cmd_info
CATALOG